iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0

Day8 Leetcode Array系列---- Merge Sorted Array

本次題目 Merge Sorted Array by JS

判斷第一個陣列在去除 0 之後是否有足夠的空間裝下第二個陣列 (合併後長度不能改變) ,如果有足夠空間,就將這個兩個陣列合併並且排序

思考路線

  1. 先算出兩個陣列的長度,再相減取得差值
  2. 判斷長陣列去除不要的元素能不能塞入短陣列
  3. 排序後的結果與題目給的 output 比較

Coding Time

先準備 function , 這邊會傳入兩個陣列,先判斷去除不要元素的長陣列能否裝入短陣列,這裡寫了一個小測試,如果 mergeArray 傳出的結果與題目給的 output 一樣就是 true ,反之 false

在陣列中去除不要元素可以用 filter 這個方法

這邊要注意陣列與陣列之間是不能用 === 相等來比較,因為他們都是不同的 object ,所以我把回傳結果與 output 都轉成 json 格式,把他們變成字串再來用 === 比較

nums1 = [1,2,3,0,0,0] 
nums2 = [2,5,6]  
Output= [1,2,2,3,5,6]

function mergeArray (ary1,ary2){
    if (ary1.length - ary2.length === ary1.filter(x => x === 0 ).length){
        
    }
}
function expect(a,b){
    console.log(JSON.stringify(a) === JSON.stringify(b)) 
}

expect(mergeArray(nums1,nums2),Output)

如果去除不要元素的長陣列能容納短陣列,用 concat 把長短陣列合併,在排序,記得要回傳!!!!

function mergeArray (ary1,ary2){
    if (ary1.length - ary2.length === ary1.filter(x => x === 0 ).length){
        const result = ary1.filter(x => x != 0).concat(ary2).sort()
        return result
    }
}
function expect(a,b){
    console.log(JSON.stringify(a) === JSON.stringify(b))   
}
expect(mergeArray(nums1,nums2),Output)

今天到此為止,有任何問題請在下方留言或透過email、GitHub聯絡我,感謝閱讀


上一篇
Day 7 -- 3Sum
下一篇
Day 9 -- Contains Duplicate
系列文
菜雞的30天工程師轉職日記--Leetcode30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言